#pragma once

interface ISetting {
public:
	virtual int GetInt(LPCTSTR sKey, int iDefault) = 0;
	virtual BOOL SetInt(LPCTSTR sKey, int iValue) = 0;
	virtual int GetString(LPCTSTR sKey, CString* cRet, LPCTSTR sDefault) = 0;
	virtual int SetString(LPCTSTR sKey, LPCTSTR sValue) = 0;
};

interface ILang {
public:
	virtual LPCWSTR get(LPCWSTR szKey, LPCWSTR szDefault) = 0;
};

interface IMainDlg {
public:
	virtual NOTIFYICONDATA* GetNID() = 0;	// Get Notification Icon Data
};

interface IPlugin {
protected:
	ISetting* setting;
	ILang* lang;

public:
	virtual LRESULT Initialize(IMainDlg* dlgMain, CWnd* pParent, ISetting* setting, ILang* lang) = 0;
	virtual void GetName(CString *sName) = 0;
	virtual int GetOrder() = 0;
	virtual CDialog* GetDialog() = 0;
};
